package cliente.pagina.contenido.foro;

import cliente.pagina.contenido.*;
import cliente.pagina.*;
import comun.constantes.*;

import java.util.*;

import helpers.foro.*;

public class ContenidoForoConfirmaOperacion extends ContenidoConfirmaOperacion {

  private String asuntoForo;
  private java.util.Vector idForosAEliminar;
  private Long idForo;
  private String estadoForo;
  private String contenidoMensaje;
  private String tipoAula;
  public ContenidoForoConfirmaOperacion()
  {
    super();
  }

  public ContenidoForoConfirmaOperacion(Pagina pagina) {
    this.setPagina(pagina);
  }


  // lo redefino porque necesito sacar los parametros del request que esta en la nueva pagina
   public void setPagina(Pagina pagina)
   {
     super.setPagina(pagina);
     if (pagina.getParameter(PARAMETROS_PAGINAS.ACCION)!=null)
     {
       this.setAccion(pagina.getParameter(PARAMETROS_PAGINAS.ACCION));
       // si la accion es eliminar debo recuperar los id de los textos para ver si los debo elimnar o no
       // que vienen en un vector en el objeto session
       //System.out.println("Accion ContenidoForoConfirmaOperacion: "+this.getAccion());
       if (this.getAccion().compareTo(ACCIONES_A_REALIZAR.ELIMINAR)==0)
       {
         this.idForosAEliminar = new Vector();
         Vector idListaForos = (Vector) this.getPagina().getSession().getAttribute(PARAMETROS_PAGINAS.ID_LISTA_FOROS);
         Enumeration enum = idListaForos.elements();
         while (enum.hasMoreElements()) {
           Object item = enum.nextElement();
           // obtengo el el parametro del request que contiene el el id del texto y nos dice si hay que elimnarlo o no
           //System.out.println("item: "+item);
           String eliminar = (String)pagina.getParameter(ACCIONES_A_REALIZAR.ELIMINAR+item);
           //System.out.println("eliminar: "+eliminar);
           if (eliminar!=null && eliminar.compareTo("checked")==0)
           {
             this.idForosAEliminar.add(item);
           }
         }
       }
       /*CODIGO AGREGADO POR GRUPO CONDE-PEREYRA - TEMA: GRUPOS*/
       //Cuando se tildan los foros grupales a eliminar
       if (this.getAccion().compareTo(ACCIONES_A_REALIZAR.ELIMINAR_FOROS_GRUPO)==0)
       {
         this.idForosAEliminar = new Vector();
         Vector idListaForos = (Vector) this.getPagina().getSession().getAttribute(PARAMETROS_PAGINAS.ID_LISTA_FOROS_GRUPALES);
         Enumeration enum = idListaForos.elements();
         while (enum.hasMoreElements()) {
           Object item = enum.nextElement();
           // obtengo el el parametro del request que contiene el el id del texto y nos dice si hay que elimnarlo o no
           //System.out.println("item: "+item);
           String eliminar = (String)pagina.getParameter(ACCIONES_A_REALIZAR.ELIMINAR+item);
           //System.out.println("eliminar: "+eliminar);
           if (eliminar!=null && eliminar.compareTo("checked")==0)
           {
             this.idForosAEliminar.add(item);
           }
         }
       }
       /*HASTA ACA*/
       // esto es por si el navegador no tiene activado java script
       if (this.getAccion().compareTo(ACCIONES_A_REALIZAR.CAMBIO_ESTADO_FORO)==0){
         Vector idListaForos = (Vector) this.getPagina().getSession().getAttribute(PARAMETROS_PAGINAS.ID_LISTA_FOROS);
         if(idListaForos!=null){
             Enumeration enum = idListaForos.elements();
             while (enum.hasMoreElements()) {
               Object item = enum.nextElement();
               // obtengo el el parametro del request que contiene el el id del texto y nos dice si hay que elimnarlo o no
               //System.out.println("item: "+item);
               String idForoParametro = pagina.getParameter(item.toString());
               // obtengo el id del foro a cambiar el estado, esto es si trabaja sin java script
               if (idForoParametro!=null)
               {
                 this.idForo = (Long)item;


                 String cambioEstado = (String)pagina.getParameter(PARAMETROS_PAGINAS.ESTADO_FORO+item);
                 //System.out.println("cambio estado: "+cambioEstado);
                 this.estadoForo = cambioEstado;
               }
             }
         }
       }
     }

     //System.out.println("contenido Confirmavcion VECTOR ID Asuntos A ELIMINAR: "+this.idForosAEliminar);
     //System.out.println("ACCION A REALIZAR: "+this.getAccion());

     if (pagina.getParameter(PARAMETROS_PAGINAS.ASUNTO_FORO)!=null)
       this.asuntoForo = pagina.getParameter(PARAMETROS_PAGINAS.ASUNTO_FORO);

     if (pagina.getParameter(PARAMETROS_PAGINAS.ID_FORO)!=null)
       this.idForo = new Long (pagina.getParameter(PARAMETROS_PAGINAS.ID_FORO));

     if (pagina.getParameter(PARAMETROS_PAGINAS.ESTADO_FORO)!=null)
       this.estadoForo = pagina.getParameter(PARAMETROS_PAGINAS.ESTADO_FORO);

     if (pagina.getParameter(PARAMETROS_PAGINAS.CONTENIDO_MENSAJE)!=null)
       this.contenidoMensaje = pagina.getParameter(PARAMETROS_PAGINAS.CONTENIDO_MENSAJE);

     //System.out.println("pagina.getParameter(PARAMETROS_PAGINAS.TIPO_AULA):"+pagina.getParameter(PARAMETROS_PAGINAS.TIPO_AULA));
     if (pagina.getParameter(PARAMETROS_PAGINAS.TIPO_AULA)!=null)
       this.tipoAula = pagina.getParameter(PARAMETROS_PAGINAS.TIPO_AULA);



   }

// redefinido para agregarle el comportamiento de la actualizacion de datos
   public String getHTMLVista() {
     HelperForo helperForo= null;
     try {
       String html = "";
       html += super.getHTMLVista();

       // hacer de acuerdo a la operacion la actualizacion correspondiente
       helperForo = new HelperForo(this.getPagina());
       String resultadoOperacion="";
       /*CODIGO AGREGADO POR GRUPO CONDE-PEREYRA - TEMA: GRUPOS*/
       //Agregue el or
       if (this.getAccion().compareTo(ACCIONES_A_REALIZAR.ELIMINAR)==0 ||
    		   this.getAccion().compareTo(ACCIONES_A_REALIZAR.ELIMINAR_FOROS_GRUPO)==0){
    	   /*HASTA ACA*/
         //System.out.println("VECTOR ID FOROS A ELIMINAR: "+this.idForosAEliminar);
         resultadoOperacion = helperForo.eliminarForos(this.idForosAEliminar);
       }
       else
         if (this.getAccion().compareTo(ACCIONES_A_REALIZAR.AGREGAR)==0)
         {
           // si el id del foro es nulo no lo pudo agregar
           if (this.asuntoForo!=null && this.asuntoForo.compareTo("")!=0)
           {
             this.idForo = helperForo.agregarForo(this.asuntoForo,tipoAula);
             if (this.idForo!=null)
             {
            	 /*CODIGO AGREGADO POR GRUPO CONDE-PEREYRA - TEMA: GRUPOS*///se agrego un4to parametro en agregarMensajeForo, y el valor es diferente a antes
                 helperForo.agregarMensajeForo(idForo,this.contenidoMensaje,null,this.getPathCarpetaArchivosRecurso(true)+"/"+PARAMETROS_PAGINAS.ID_FORO+this.idForo);
                 /*HASTA ACA*/
//               helperForo.agregarMensajeForo(idForo,this.contenidoMensaje,null);
               resultadoOperacion = TEXTOS.ACTUALIZACION_DE_DATOS_EXITOSA;
             }
             else
               resultadoOperacion = comun.MensajeDeError.ERROR_EN_LA_ACTUALIZACION_DE_DATOS;
           }
           else
             resultadoOperacion = comun.MensajeDeError.ERROR_EL_ASUNTO_NO_DEBE_SER_VACIO;
         }
         else// cambio de estado del foro
         {
           // esto es para poder pasar el mensaje en la pagina de edicion de la comunicacion
           Long idForoAModificar = this.idForo;
           this.idForo = helperForo.cambioEstadoForo(this.idForo,this.estadoForo);
           // si es null es porque hubo un error
           if (this.idForo == null)
           {
             // recupero el id original, porque hubo un error
             this.idForo = idForoAModificar;
             resultadoOperacion = comun.MensajeDeError.ERROR_EN_LA_ACTUALIZACION_DE_DATOS;
           }
           else
             resultadoOperacion = TEXTOS.ACTUALIZACION_DE_DATOS_EXITOSA;
         }

         // hacer el forward a la pagina desde donde se invoco esta pagina
         ContenidoForo contenidoForo= new ContenidoForo(this.getPagina());
         String paginaForward=contenidoForo.getPathNombrePagina()
                     // paso como parametro el resultado de la operacion
                     +"&"+PARAMETROS_PAGINAS.RESULTADO_OPERACION+"="+resultadoOperacion;
         // si el texto es distinto de null lo paso como parametro
         if (this.idForo!=null)
           paginaForward +="&"+PARAMETROS_PAGINAS.ID_FORO+"="+this.idForo;

         html += utils.UtilsGenerarHtml.generarHTMLForward(paginaForward);

         html += " <center> <a href=\""+paginaForward+"\"> haga click en este link para regresar </a></center>  <br />\n";

         // cierro el helper
         helperForo.commit();
         return html;
    }
    catch (Exception ex) {
      // cierro el helper
      helperForo.rollback();
      ex.printStackTrace();
      return  comun.MensajeDeError.ERROR_EN_LA_GENERACION_DE_LA_PAGINA;
    }
   }




  protected String getNombrePagina() {
    return "foro_confirma_operacion.jsp";
  }

  public String getTitulo()
  {
    return this.getAccion()+TEXTOS.FORO;
  }

  public String getNombreRecurso()
  {
    return RECURSOS.FORO_ASUNTO;
  }

  public String getTituloLink() {
    /**@todo Implement this cliente.pagina.contenido.VistaContenido abstract method*/
    throw new java.lang.UnsupportedOperationException("Method getTituloLink() not yet implemented.");
  }

  public void setAsuntoForo(String asuntoForo) {
    this.asuntoForo = asuntoForo;
  }
  public String getAsuntoForo() {
    return asuntoForo;
  }
  public void setIdForosAEliminar(java.util.Vector idForosAEliminar) {
    this.idForosAEliminar = idForosAEliminar;
  }
  public java.util.Vector getIdForosAEliminar() {
    return idForosAEliminar;
  }
  public void setIdForo(Long idForo) {
    this.idForo = idForo;
  }
  public Long getIdForo() {
    return idForo;
  }
  public void setEstadoForo(String estadoForo) {
    this.estadoForo = estadoForo;
  }
  public String getEstadoForo()
  {
    return estadoForo;
  }
  public void setTipoAula(String tipoAula)
  {
    this.tipoAula = tipoAula;
  }
  public String getTipoAula()
  {
    return tipoAula;
  }

  // redefinida para dar la subcarpeta donde se colocarta el archivo
  public String getSubcarpetaRecurso()
  {
    return CARPETAS_ARCHIVOS_RECURSO.FORO;
  }

}